package config

type UserSrvConfig struct {
	Host string `mapstructure:"host" json:"host"`
	Port int    `mapstructure:"port" json:"port"`
	Name string `mapstructure:"name" json:"name"`
}

type JWTConfig struct {
	SigningKey string `mapstructure:"key" json:"key"`
}

type AliSmsConfig struct {
	ApiKey     string `mapstructure:"key" json:"key"`
	ApiSecrect string `mapstructure:"secrect" json:"secrect"`
}

type AliSmsPartConfig struct {
	Appcode string `mapstructure:"appcode" json:"appcode"`
}

type ConsulConfig struct {
	Host string `mapstructure:"host" json:"host"`
	Port int    `mapstructure:"port" json:"port"`
}

type MysqlConfig struct {
	Host     string `mapstructure:"host" json:"host"`
	Port     int    `mapstructure:"port" json:"port"`
	Name     string `mapstructure:"db" json:"db"`
	User     string `mapstructure:"user" json:"user"`
	Password string `mapstructure:"password" json:"password"`
}

type RedisConfig struct {
	Host   string `mapstructure:"host" json:"host"`
	Port   int    `mapstructure:"port" json:"port"`
	Expire int    `mapstructure:"expire" json:"expire"`
	Pass   string `mapstructure:"pass" json:"pass"`
}

type RyConfig struct {
	RyKey    string `mapstructure:"ry_app_key" json:"ry_app_key"`
	RySecret string `mapstructure:"ry_app_secret" json:"ry_app_secret"`
}

type AliOssConfig struct {
	Host         string `mapstructure:"host" json:"host"`
	AccessKey    string `mapstructure:"access_key" json:"access_key"`
	AccessSecret string `mapstructure:"access_secret" json:"access_secret"`
	Endpoint     string `mapstructure:"endpoint" json:"endpoint"`
	BucketName   string `mapstructure:"bucket_name" json:"bucket_name"`
}

type ServerConfig struct {
	Name           string           `mapstructure:"name" json:"name"`
	UserTokenKey   string           `mapstructure:"user_token_key" json:"user_token_key"`
	Host           string           `mapstructure:"host" json:"host"`
	Tags           []string         `mapstructure:"tags" json:"tags"`
	Port           int              `mapstructure:"port" json:"port"`
	UserSrvInfo    UserSrvConfig    `mapstructure:"user_srv" json:"user_srv"`
	JWTInfo        JWTConfig        `mapstructure:"jwt" json:"jwt"`
	AliSmsInfo     AliSmsConfig     `mapstructure:"sms" json:"sms"`
	AliSmsPartInfo AliSmsPartConfig `mapstructure:"sms_part" json:"sms_part"`
	RedisInfo      RedisConfig      `mapstructure:"redis" json:"redis"`
	ConsulInfo     ConsulConfig     `mapstructure:"consul" json:"consul"`
	MysqlInfo      MysqlConfig      `mapstructure:"mysql" json:"mysql"`
	RyInfo         RyConfig         `mapstructure:"ry" json:"ry"`
	AliOssInfo     AliOssConfig     `mapstructure:"ali_oss" json:"ali_oss"`
}

type NacosConfig struct {
	Host      string `mapstructure:"host"`
	Port      uint64 `mapstructure:"port"`
	Namespace string `mapstructure:"namespace"`
	User      string `mapstructure:"user"`
	Password  string `mapstructure:"password"`
	DataId    string `mapstructure:"dataid"`
	Group     string `mapstructure:"group"`
}
